package lx300;

import java.io.FileOutputStream;
import java.io.PrintStream;

//import model.fiscal.NotaFiscal;
import modelo.ctrc;
//import model.fiscal.NotaFiscalItem;
//import pub.Formato;
//import dao.ParametroDAO;

public class EmissorLX300 extends EmissorCtrc {    

    String Impressora;
    
	public EmissorLX300(ctrc Ctrc, StringBuffer destino, String Impressora) {
		super(Ctrc, destino);
                this.Impressora = Impressora;
	}
	
	protected void adicionarNegrito(String texto) {
		adicionar("\u001B" + "E" + texto + "\u001B" + "F");
	}
	
//	protected void adicionar(String texto) {
//		super.adicionar(Formato.removerAcento(texto));
//	}
	
	public void imprimir() {
		FileOutputStream fos = null;
		PrintStream ps = null;
		
		// Abre a impressora
		try {
		     fos = new FileOutputStream(Impressora);
		     ps = new PrintStream(fos);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		
		// Imprime o conteúdo
		ps.print(this.destino);
		ps.print("\f");
		
		// Fecha a impressora 
		try {
			ps.close();
			fos.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void emitir() {
		// Espaçamento inicial
		adicionar("\u001B\u004A" + (char)50);
		
		//quebrarLinha(4);
                // Número
		adicionarNegrito(alinharDireita(getCtrc().getNumero().toString(), 119));
		quebrarLinha(2);
                
                // Natureza e CFOP
		adicionar(alinharDireita(getCtrc().getNatureza(), 105));
		quebrarLinha(5);
                darEspaco(12);
		adicionar(alinharEsquerda(getCtrc().getRemetente(), 70));
                quebrarLinha(8);
                
		// Entrada / Saida
		if (getCtrc().getTipo().equals(ctrc.SAIDA)) {
			darEspaco(20);
			adicionarNegrito(alinharEsquerda("X", 1));
			darEspaco(31);
		} else {
			darEspaco(17);
			adicionarNegrito(alinharDireita("X", 1));
			darEspaco(18);
		}
		
		
		
//		
//		quebrarLinha(3);
//		
//		// Razão Social - CNPJ - Data Emissao
//		adicionar(alinharEsquerda(getNotaFiscal().getClienteNome(), 83));
//		darEspaco(2);
//		adicionar(alinharEsquerda(getNotaFiscal().getClienteDocumento(), 31));
//		darEspaco(6);
//		if (getNotaFiscal().getDataEmissao() != null) {
//			adicionar(alinharCentro(Formato.formatData(getNotaFiscal().getDataEmissao()), 14));			
//		}
//		quebrarLinha(2);
//		
//		
//		// Municipio - Fone - UF - Inscricao Estadual - Hora Ent/Sai
//		adicionar(alinharEsquerda(getNotaFiscal().getClienteMunicipio(), 48));
//		darEspaco(2);
//		adicionar(alinharEsquerda(getNotaFiscal().getClienteFone(), 27));
//		darEspaco(2);
//		adicionar(alinharCentro(getNotaFiscal().getClienteUF(), 4));
//		darEspaco(2);
//		adicionar(alinharEsquerda(getNotaFiscal().getClienteInscricaoEstadual(), 32));
//		darEspaco(5);
//		adicionar(alinharCentro(getNotaFiscal().getHoraEntradaSaida(), 14));
//		quebrarLinha(4);
//		
//		// Itens
//		int qtdeTotal = 16;
//		int qtde = 0;
//		for (NotaFiscalItem item : getNotaFiscal().getItensNota()) {
//			if (item != null) {
//				adicionar(alinharCentro(item.getProduto().getCodigo(), 11));
//				darEspaco(3);
//				adicionar(alinharEsquerda(item.getProduto().getDescricao(), 54));
//				darEspaco(6);
//				adicionar(alinharCentro(item.getProduto().getUnidadeMedida().getAbreviado(), 5));
//				darEspaco(2);
//				adicionar(alinharCentro(Formato.formatoDoubleFloat(item.getQuantidade()), 7));
//				darEspaco(2);
//				adicionar(alinharDireita(Formato.formatoDoubleFloat(item.getValorUnitario()), 13));
//				darEspaco(2);
//				adicionar(alinharDireita(Formato.formatoDoubleFloat(item.getValorTotal()), 16));
//				darEspaco(1);
//				adicionar(alinharDireita(Formato.formatoNumerico(item.getItemICMS().getAliquota()), 3));
//				darEspaco(1);
//				adicionar(alinharDireita(Formato.formatoNumerico(item.getAliqIPI()), 3));
//				darEspaco(1);
//				adicionar(alinharDireita(Formato.formatoNumerico(item.getValorIPI()), 5));
//				
//				quebrarLinha();
//				
//				qtde++;
//			}
//		}
		
//		while (qtde <= qtdeTotal) {
//			quebrarLinha();
//
//			qtde++;
//		}
//
//		// Imposto

//		quebrarLinha(3);
//		darEspaco(111);
		//adicionarNegrito(alinharCentro(getCtrc().getNumero().toString(), 12));
	}

}
